Analysis date: 2023-01-03

Depends on

CRC_Xenografts_FirstBatch_DataProcessing Script

#set.seed(2022)
load("../Data/Cache/Xenografts_Batch1_DataProcessing.RData")

Setup

Load libraries

Functions

General

source("../../../General/Code/Analysis_Functions.R")
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6      ✔ purrr   0.3.5 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.1 
## ✔ readr   2.1.3      ✔ forcats 0.5.2 
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::collapse()   masks IRanges::collapse()
## ✖ dplyr::combine()    masks Biobase::combine(), BiocGenerics::combine()
## ✖ dplyr::count()      masks matrixStats::count()
## ✖ dplyr::desc()       masks IRanges::desc()
## ✖ tidyr::expand()     masks S4Vectors::expand()
## ✖ dplyr::filter()     masks stats::filter()
## ✖ dplyr::first()      masks S4Vectors::first()
## ✖ dplyr::lag()        masks stats::lag()
## ✖ purrr::map()        masks kohonen::map()
## ✖ ggplot2::Position() masks BiocGenerics::Position(), base::Position()
## ✖ purrr::reduce()     masks GenomicRanges::reduce(), IRanges::reduce()
## ✖ dplyr::rename()     masks S4Vectors::rename()
## ✖ dplyr::select()     masks AnnotationDbi::select()
## ✖ dplyr::slice()      masks IRanges::slice()
source("CRC_Xenografts_Batch1_Functions.R")

SOMs

Train_SOM <- function(phos_mat, try.k){
  ## define a grid for the SOM and train
  grid.size <- ceiling(nrow(phos_mat ) ^ (1/2.5))
  som.grid <- somgrid(xdim = grid.size, ydim = grid.size, topo =   'hexagonal', toroidal = T)
  som.model <- som(data.matrix(phos_mat ), grid = som.grid)
  
  ## extract some data to make it easier to use
  som.events <- som.model$codes[[1]]
  #som.events.colors <- rgb(som.events[,1], som.events[,2],   som.events[,3], maxColorValue = 255)
  som.dist <- as.matrix(dist(som.events))
  
  
  plot(som.model, type = 'mapping', cex=0.2)
  plot(som.model, type="changes")
  plot(som.model, type = 'count')
  plot(som.model, type="dist.neighbours")
  # plot(som.model, type="codes") 
  # dev.off()
  #plot(som.model, type = "property", property = som.model$codes[,4],   main=names(som.model$data)[4]#, palette.name=coolBlueHotRed
  
  #try.k <- 2:100
  cluster.dist.eval <- as.data.frame(matrix(ncol = 3, nrow = (length(try.k))))
  colnames(cluster.dist.eval) <- c('k', 'kmeans', 'hclust')
  
  for(i in 1:length(try.k)) {
    cluster.dist.eval[i, 'k'] <- try.k[i]
    cluster.dist.eval[i, 'kmeans'] <- Cluster_Mean_Dist(kmeans(som.events, centers   = try.k[i], iter.max = 20)$cluster, som.dist = som.dist)
    cluster.dist.eval[i, 'hclust'] <-   Cluster_Mean_Dist(cutree(hclust(vegan::vegdist(som.events)), k = try.k[i]),   som.dist = som.dist)
  }
  
  plot(cluster.dist.eval[, 'kmeans'] ~ try.k,
       type = 'l')
  
  lines(cluster.dist.eval[, 'hclust'] ~ try.k,
        col = 'red')
  
  legend('topright',
         legend = c('k-means', 'hierarchical'),
         col = c('black', 'red'),
         lty = c(1, 1))
  
  return(list( som.model, som.events ))
}

## Define a function to calculate mean distance within each cluster.  This
## is roughly analogous to the within clusters ss approach
Cluster_Mean_Dist <- function(clusters, som.dist){
  cluster.means = c()
  
  for(c in unique(clusters)){
    temp.members <- which(clusters == c)
    
    if(length(temp.members) > 1){
      temp.dist <- som.dist[temp.members,]
      temp.dist <- temp.dist[,temp.members]
      cluster.means <- append(cluster.means, mean(temp.dist))
    }else(cluster.means <- 0)
  }
  
  return(mean(cluster.means))
  
}

Plot_Colored_SOM <- function(som.model, clusters, type = "mapping", cl = 40){
  plot(som.model, 
       type = type, 
       pchs = 21, 
       cex=0.2,
       col = "black",
       #bg = c("blue" , "red", "yellow", "green")[as.factor(str_remove(str_split( rownames(som.model$data[[1]]), "-", simplify = T )[,1], "log2FC_")) ] , 
       keepMargins = F,
       bgcol = c(RColorBrewer::brewer.pal(12, "Set3"), RColorBrewer::brewer.pal(9, "Set1"), RColorBrewer::brewer.pal(8, "Set2"), RColorBrewer::brewer.pal(9, "Pastel1"), RColorBrewer::brewer.pal(8, "Dark2"))[clusters]  )
  
    add.cluster.boundaries(som.model, clusters)
}

Asign_To_Clusters <- function(som.model, clusters){
  cluster_classification <- som.model$unit.classif
  names(cluster_classification) <- rownames(som.model$data[[1]])
  classification <- clusters[cluster_classification]
  names(classification) <- rownames(som.model$data[[1]])
  classification
}

Get_Members_Of_One_Cluster <- function(som.model, clusters, n){
  message(paste("Cluster" , n ))
  asign <- Asign_To_Clusters(som.model, clusters)
  names(asign[asign == n])
}

Get_Mat_With_Assigned_Clusters <- function(som.model, clusters, phos_mat ){
  som.cluster.asignedclusters <- Asign_To_Clusters(som.model = som.model, 
                 clusters = clusters) 
  
  phos_mat_t <- as.data.frame( t(phos_mat) )
  phos_mat_t$cluster <-   som.cluster.asignedclusters[rownames(phos_mat_t)]
    
  phos_mat_t <- phos_mat_t %>%
      rownames_to_column( "peptide") %>%
      pivot_longer(-c(peptide, cluster), names_to = "sample", values_to = "log2FC")   %>%
      mutate(sample = gsub( "log2FC_", "", sample)) %>%
      separate( sample , into = c("xenograft", "treatment", "day", "replicate", "set"), sep = "_", remove = F) %>%
      separate(peptide, into = c("HGNC_Symbol", "Annotated_Sequence"), sep = "_",   remove = F ) %>%
      mutate(treatment = as.factor(treatment)) 
  return(phos_mat_t)
}

Plot_Profiles_SOM_clusters <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
    phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
    phos_mat_t <- phos_mat_t
  
  mean_per_type <- 
    phos_mat_t %>%
    group_by(sample, treatment) %>%
    summarise(log2FC= median(log2FC)) %>%
    ungroup() %>%
    group_by(treatment) %>%
    summarise(mean_log2FC = mean(log2FC)) %>%
    ungroup() %>%
    column_to_rownames("treatment") %>% 
    t %>% as_tibble()
  
  if(specific_cluster){
    phos_mat_t <- phos_mat_t %>% 
      filter(cluster==specific_cluster)
  }
  
  phos_mat_t %>% 
    filter(!is.na(cluster)) %>%
      #filter(cluster==19) %>%
      ggplot(aes( sample, log2FC, fill = treatment, group = peptide )) +
      geom_line(alpha = 0.3) +
      theme_bw() +
      theme(axis.text.x = element_text(angle = 90),
            axis.title.x = element_blank()) +
      scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
      facet_wrap(~cluster, ncol = ncol_grid) +
      geom_hline(col = PGPalette[5], yintercept = mean_per_type$ctrl) +
      geom_hline(col = PGPalette[1], yintercept = mean_per_type$E) +
      geom_hline(col = PGPalette[2], yintercept = mean_per_type$EC) +
      geom_hline(col = PGPalette[4], yintercept = mean_per_type$EBC) +
    geom_point(alpha = 0.3, aes(col = treatment), size = 0.4)
}

Plot_Profiles_SOM_Clusters_Splitbyprep <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
    phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
    phos_mat_t <- phos_mat_t
  
  if(specific_cluster){
    phos_mat_t <- phos_mat_t %>% 
      filter(cluster==specific_cluster)
  }
  
  phos_mat_t %>% 
    filter(!is.na(cluster)) %>%
      #filter(cluster==19) %>%
      mutate(prep = unlist(prep_l[sample]), 
             treatment = as.factor(treatment) ) %>%
    mutate(treatment = factor(treatment, levels = c("ctrl", "E", "EC", "EBC"))) %>%
      group_by(treatment, prep, sample, cluster) %>%
      summarise(log2FC= mean(log2FC)) %>%
      ungroup() %>%
      ggplot(aes( treatment, log2FC, fill = treatment )) +
      geom_boxplot(outlier.size = 0) +
      theme_bw() +
      scale_fill_manual(values = PGPalette[c(5,1,2,4)]) +
      facet_wrap(~cluster+prep) +
      ggpubr::stat_compare_means() +
      ggbeeswarm::geom_beeswarm()
}

Plot_Profiles_SOM_clusters_prep <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
    phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
    phos_mat_t <- phos_mat_t
  
  if(specific_cluster){
    phos_mat_t <- phos_mat_t %>% 
      filter(cluster==specific_cluster)
  }
  
  phos_mat_t %>% 
    filter(!is.na(cluster)) %>%
      #filter(cluster==19) %>%
      mutate(prep = unlist(prep_l[sample]) ) %>%
      ggplot(aes( sample, log2FC, fill = prep, group = peptide )) +
      geom_line(alpha = 0.3) +
      theme_bw() +
      theme(axis.text.x = element_text(angle = 90),
            axis.title.x = element_blank()) +
      scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
      facet_wrap(~cluster, ncol = ncol_grid) +
    geom_point(alpha = 0.3, aes(col = prep), size = 0.4)
}

Plot_Profiles_SOM_clusters_prep_sorted_by_prep <- function(som.model, clusters, phos_mat, ncol_grid=4, specific_cluster = FALSE ){
    phos_mat_t <- Get_Mat_With_Assigned_Clusters(som.model, clusters, phos_mat)
    phos_mat_t <- phos_mat_t
  
  if(specific_cluster){
    phos_mat_t <- phos_mat_t %>% 
      filter(cluster==specific_cluster)
  }
  
  phos_mat_t <- phos_mat_t %>% 
    filter(!is.na(cluster)) %>%
      #filter(cluster==19) %>%
      mutate(prep = unlist(prep_l[sample]) )
  order_prep <- phos_mat_t %>%
    arrange( prep, treatment, day ) %>%
    .$sample
  phos_mat_t %>% 
      mutate(sample = as.factor(sample)) %>%
      mutate(sample = factor(sample, levels = unique(order_prep)) ) %>%
      ggplot(aes( sample, log2FC, fill = prep, group = peptide )) +
      geom_line(alpha = 0.3) +
      theme_bw() +
      theme(axis.text.x = element_text(angle = 90),
            axis.title.x = element_blank()) +
      scale_color_manual(values = PGPalette[c(5,1,2,4)]) +
      facet_wrap(~cluster, ncol = ncol_grid) +
    geom_point(alpha = 0.3, aes(col = prep), size = 0.4)
}

Confusion_Matrix <- function(cluster){
  as.data.frame(Asign_To_Clusters(som.model.pat, cluster) ) %>% 
  rownames_to_column("sample") %>% 
  separate(sample, sep = "_", into = c("log2FC", "xenograft", "treatment", "day", "replicate", "set" )  ) %>%
  select(-day, -set, -xenograft, -log2FC, -replicate) %>%
  table
}


Confusion_Matrix_Prep <- function(cluster){
  as.data.frame(Asign_To_Clusters(som.model.pat, cluster) ) %>% 
  rownames_to_column("sample") %>% 
  mutate(prep = unlist( prep_l[ gsub("log2FC_", "", sample)]) ) %>%
  separate(sample, sep = "_", into = c("log2FC", "xenograft", "treatment", "day", "replicate", "set" )  ) %>%
  select(-day, -set, -xenograft, -log2FC, -replicate, -treatment) %>%
  table
}

StringDB

Plot_StringDB <- function(hits){
  hits <- as.data.frame(hits)
  colnames(hits) <- "HGNC_Symbol"
  hits_mapped <- string_db$map( hits, "HGNC_Symbol", removeUnmappedRows = TRUE )
  string_db$plot_network( hits_mapped)
}

SOMs

Peptide - pY (no normal)

train the SOM

som.pept.pY <- Train_SOM(phos_mat= t(pY_mat_normtomedian), try.k = 2:50)

som.model.pept.pY <- som.pept.pY[[1]]
som.events.pept.pY <- som.pept.pY[[2]]

evaluate clustering algorithms

## Having selected a reasonable value for k, evaluate different clustering algorithms.

## Try several different clustering algorithms, and, if desired, different values for k
cluster.tries.pept.pY <- list()

for(k in c(13,19, 29, 31)){
  ## k-means clustering
  
  som.cluster.k <- kmeans(som.events.pept.pY, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
  
  ## hierarchical clustering
  
  som.dist.pept <- dist(som.events.pept.pY) # hierarchical, step 1
  #som.cluster.h <- cutree(hclust(som.dist.pept), k = k) # hierarchical, step 2
  
  ## capture outputs
  cluster.tries.pept.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
  #cluster.tries.pept.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}

## Take a look at the various clusters.  You're looking for the algorithm that produces the
## least fragmented clusters.

message("k13")
## k13
Plot_Colored_SOM(som.model.pept.pY, 
                 cluster.tries.pept.pY$som.cluster.k.13, cl = 13)

message("k19")
## k19
Plot_Colored_SOM(som.model.pept.pY, 
                 cluster.tries.pept.pY$som.cluster.k.19, cl = 19)

message("k29")
## k29
Plot_Colored_SOM(som.model.pept.pY, 
                 cluster.tries.pept.pY$som.cluster.k.29, cl = 29)

message("k31")
## k31
Plot_Colored_SOM(som.model.pept.pY, 
                 cluster.tries.pept.pY$som.cluster.k.31, cl = 31)

#cluster.tries.pept.pY$som.cluster.k.20

message("Members in each cluster (k13):")
## Members in each cluster (k13):
sort(table(Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.13))) 
## 
##  7  3 11  8 12 13  1  9  2  5 10  4  6 
##  2  3  3  4  8  8 10 10 11 11 17 18 50
message("Members in each cluster (k29):")
## Members in each cluster (k29):
sort(table(Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.29))) 
## 
## 13 14  1  4  6  9 19 23 25 11 17 27  5 15 16 18 22  2  3  7 12 29 21 26 10 24 
##  1  1  2  2  2  2  2  2  2  3  3  3  4  4  4  4  4  5  5  5  6  6  7  7  9 10 
## 20 28  8 
## 13 18 19

Abundance across all peptides

t(pY_mat_normtomedian) %>%
  as.data.frame(  ) %>%
  rownames_to_column( "peptide") %>%
  pivot_longer(-peptide, names_to = "sample", values_to = "log2FC") %>%
  mutate(sample = gsub( "log2FC_", "", sample)) %>%
  separate( sample , into = c("xenograft", "treatment", "day", "replicate", "set"), sep = "_", remove = F) %>%
  separate(peptide, into = c("HGNC_Symbol", "Annotated_Sequence"), sep =   "_", remove = F ) %>%
  group_by(sample, treatment, day, set, replicate) %>%
  summarise("Mean of cluster" = mean(log2FC)) %>%
  ungroup() %>%
  mutate(treatment = as.factor(treatment)) %>%
  ggplot(aes( treatment, `Mean of cluster`, fill = treatment )) +
  geom_boxplot(outlier.size = 0) +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90),
  axis.title.x = element_blank()) +
  scale_fill_manual(values = PGPalette[c(5,1,2,4)]) +
  ggbeeswarm::geom_beeswarm() +
  ggpubr::stat_compare_means()
## `summarise()` has grouped output by 'sample', 'treatment', 'day', 'set'. You
## can override using the `.groups` argument.

Analysis clusters

k 13

Profiles for all clusters
Plot_Profiles_SOM_clusters(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.13,
                           phos_mat = pY_mat_normtomedian)
## `summarise()` has grouped output by 'sample'. You can override using the
## `.groups` argument.

Plot_Profiles_SOM_clusters_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.13,
                           phos_mat = pY_mat_normtomedian)

Plot_Profiles_SOM_clusters_prep_sorted_by_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.13,
                           phos_mat = pY_mat_normtomedian)

Plot_Profiles_SOM_Clusters_Splitbyprep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.13,
                           phos_mat = pY_mat_normtomedian)
## `summarise()` has grouped output by 'treatment', 'prep', 'sample'. You can
## override using the `.groups` argument.

Plot_Profiles_SOM_Clusters_Splitbyprep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.13,
                           phos_mat = pY_mat_normtomedian, 
                           specific_cluster = 1)
## `summarise()` has grouped output by 'treatment', 'prep', 'sample'. You can
## override using the `.groups` argument.

Members of clusters
Get_Mat_With_Assigned_Clusters(som.model = som.model.pept.pY,
                                clusters = cluster.tries.pept.pY$som.cluster.k.13,
                                phos_mat = pY_mat_normtomedian) %>% 
  select(HGNC_Symbol, Annotated_Sequence, cluster) %>%
  unique
## # A tibble: 155 × 3
##    HGNC_Symbol Annotated_Sequence                 cluster
##    <chr>       <chr>                                <int>
##  1 RPSA        ADHQPLTEASyVNLPTIALCNTDSPLR              2
##  2 PKP3        ADyDTLSLR                                4
##  3 ANXA2       AEDGSVIDyELIDQDAR                        6
##  4 ANKRD39     AEDPSQPDSAGyTALHYASR                     4
##  5 LYN         AEERPTFDYLQSVLDDFyTATEGQYQQQP            1
##  6 PKM         AEGSDVANAVLDGADCIMLSGETAKGDyPLEAVR       6
##  7 SRC         AGPLAGGVTTFVALyDYESR                    10
##  8 MYH9        ALELDSNLyR                              10
##  9 LAMTOR1     ALNGAEPNyHSLPSAR                         4
## 10 NCOA4       ANEPCTSFAECVCDENCEKEALyK                13
## # … with 145 more rows
Get_Mat_With_Assigned_Clusters(som.model = som.model.pept.pY,
                                clusters = cluster.tries.pept.pY$som.cluster.k.13,
                                phos_mat = pY_mat_normtomedian) %>% 
  filter(cluster==3) %>%
  select(HGNC_Symbol, Annotated_Sequence)  %>%
  unique
## # A tibble: 3 × 2
##   HGNC_Symbol Annotated_Sequence
##   <chr>       <chr>             
## 1 TLN2        ECDySIDGINR       
## 2 CILK1       SKPPYtDyVSTR      
## 3 HIPK3       TVCSTyLQSR
Get_Mat_With_Assigned_Clusters(som.model = som.model.pept.pY,
                                clusters = cluster.tries.pept.pY$som.cluster.k.13,
                                phos_mat = pY_mat_normtomedian) %>% 
  filter(cluster==5) %>%
  select(HGNC_Symbol, Annotated_Sequence) %>%
  unique
## # A tibble: 11 × 2
##    HGNC_Symbol Annotated_Sequence
##    <chr>       <chr>             
##  1 PFN1        CyEMASHLR         
##  2 MAPK13      HADAEMTGyVVTR     
##  3 ATG101      HEyLPK            
##  4 MAPK14      HTDDEMTGyVATR     
##  5 DDR1        NLyAGDyYR         
##  6 DDR1        NLYAGDyYR         
##  7 MAPK12      QADSEMTGyVVTR     
##  8 BRK1        RIEyIEAR          
##  9 VCL         SFLDSGyR          
## 10 EPHA2       VLEDDPEATyTTSGGK  
## 11 PTK2        YMEDSTyYK
Get_Mat_With_Assigned_Clusters(som.model = som.model.pept.pY,
                                clusters = cluster.tries.pept.pY$som.cluster.k.13,
                                phos_mat = pY_mat_normtomedian) %>% 
  select(HGNC_Symbol, Annotated_Sequence, cluster) %>%
  unique %>%
  write.table(quote = FALSE, row.names = FALSE, col.names = TRUE, file = "../Data/ForCollaborators/Xenografts_Batch1_k13pY.txt")

k 19

Profiles for all clusters
Plot_Profiles_SOM_clusters(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.19,
                           phos_mat = pY_mat_normtomedian)
## `summarise()` has grouped output by 'sample'. You can override using the
## `.groups` argument.

Plot_Profiles_SOM_clusters_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.19,
                           phos_mat = pY_mat_normtomedian)

Plot_Profiles_SOM_clusters_prep_sorted_by_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.19,
                           phos_mat = pY_mat_normtomedian)

Abundance per group for each cluster
Get_Mat_With_Assigned_Clusters(som.model = som.model.pept.pY,
                                clusters = cluster.tries.pept.pY$som.cluster.k.19,
                                phos_mat = pY_mat_normtomedian) %>%
  group_by(sample, type, replicate, cluster) %>%
    summarise("Mean of cluster" = mean(log2FC)) %>%
    ungroup() %>%
    mutate(type = as.factor(type)) %>%
    mutate(type = factor(type, levels = c("WT", "G34R", "K27M"))) %>%
    ggplot(aes( type, `Mean of cluster`, fill = type )) +
    geom_boxplot(outlier.size = 0) +
    theme_bw() +
    theme(axis.text.x = element_text(angle = 90),
          axis.title.x = element_blank()) +
    scale_fill_manual(values = PGPalette[c(5,1,2)]) +
    ggbeeswarm::geom_beeswarm() +
    ggpubr::stat_compare_means(method = "t.test", 
                               comparisons = list(c("WT", "G34R"), 
                                                  c("WT", "K27M"),
                                                  c("K27M", "G34R")) ) +
  facet_wrap(~cluster, ncol = 5)
Per group across all clusters
som.cluster.k.20.asignedclusters <- Asign_To_Clusters(som.model = som.model.pept.pY, 
               clusters = cluster.tries.pept.pY$som.cluster.k.10) 

pY_mat_normtomedian_t <- as.data.frame( t(pY_mat_normtomedian) )
pY_mat_normtomedian_t$cluster <- som.cluster.k.20.asignedclusters[rownames(pY_mat_normtomedian_t)]
  
pY_mat_normtomedian_t <- pY_mat_normtomedian_t %>%
    rownames_to_column( "peptide") %>%
    pivot_longer(-c(peptide, cluster), names_to = "sample", values_to = "log2FC") %>%
    mutate(sample = gsub( "log2FC_", "", sample)) %>%
    separate(sample, into = c("type", "replicate"), sep = "-",remove = F) %>%
    separate(peptide, into = c("HGNC_Symbol", "Annotated_Sequence"), sep = "_", remove = F ) %>%
    mutate(type = as.factor(type)) %>%
    mutate(type = factor(type, levels = c("WT", "G34R", "K27M"))) 
  
pY_mat_normtomedian_t %>%
    group_by(sample, type, replicate, cluster) %>%
    summarise("Mean of cluster" = mean(log2FC)) %>%
    ungroup() %>%
    ggplot(aes( cluster, `Mean of cluster`, fill = type, group = cluster )) +
    geom_boxplot(outlier.size = 0) +
    theme_bw() +
    theme(axis.text.x = element_text(angle = 90),
          axis.title.x = element_blank()) +
    scale_fill_manual(values = PGPalette[c(5,1,2)]) +
    ggbeeswarm::geom_beeswarm() +
    geom_hline(yintercept = 0) +
    facet_grid(type~.)
k10cl_pY <- Asign_To_Clusters(som.model.pept.pY, cluster.tries.pept.pY$som.cluster.k.10)
# PLSDA pY comp1
k10cl_pY[which(grepl("SIRPA", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("NCK1", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("CTTN", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("MAPK12", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("PTK2", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("GAB2", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("KIRREL1", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("BCAR1", names(k10cl_pY) )) ]
# PLSDA pY comp2
k10cl_pY[which(grepl("CTNNA1", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("VIM", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("PSMA2", names(k10cl_pY) )) ]
k10cl_pY[which(grepl("SRSF9", names(k10cl_pY) )) ]

k 29

Profiles for all clusters
Plot_Profiles_SOM_clusters(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.29,
                           phos_mat = pY_mat_normtomedian)
## `summarise()` has grouped output by 'sample'. You can override using the
## `.groups` argument.

Plot_Profiles_SOM_clusters_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.29,
                           phos_mat = pY_mat_normtomedian)

Plot_Profiles_SOM_clusters_prep_sorted_by_prep(som.model = som.model.pept.pY,
                           clusters = cluster.tries.pept.pY$som.cluster.k.29,
                           phos_mat = pY_mat_normtomedian)

Xenografts - No normal pY

train the SOM

som.pat <- Train_SOM(phos_mat= pY_mat_normtomedian, try.k = 2:15)

som.model.pat <- som.pat[[1]]
som.events.pat <- som.pat[[2]]

evaluate clustering algorithms

## Having selected a reasonable value for k, evaluate different clustering algorithms.

## Define a function for make a simple plot of clustering output.
## This is the same as previousl plotting, but we define the function
## here as we wanted to play with the color earlier.

## Try several different clustering algorithms, and, if desired, different values for k

cluster.tries.pat.pY <- list()
for(k in c(5,6,7)){
  message(paste(k, "clusters"))
  ## k-means clustering
  som.cluster.k <- kmeans(som.events.pat, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
  
  ## hierarchical clustering
  som.dist.pat <- dist(som.events.pat) # hierarchical, step 1
  som.cluster.h <- cutree(hclust(som.dist.pat), k = k) # hierarchical, step 2
  
  ## capture outputs
  cluster.tries.pat.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
  cluster.tries.pat.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}
## 5 clusters
## 6 clusters
## 7 clusters

Hierarchical

## Take a look at the various clusters.  You're looking for the algorithm that produces the
## least fragmented clusters.
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.7)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               5                               4 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               3                               5 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               2                               2 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               1                               2 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               2                               3 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               5                               4 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               1 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               5                               2 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               2                               1 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               1                               4 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               1                               5 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               3                               1 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               3                               1 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               2                               4 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               1                               1 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               1                               2 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               1                               1 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               2                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               1
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               6                               4 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               3                               6 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               2                               2 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               1                               2 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               2                               3 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               5                               4 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               1 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               6                               2 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               2                               1 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               1                               4 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               1                               6 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               3                               1 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               3                               1 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               2                               4 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               1                               1 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               1                               2 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               1                               1 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               2                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               1
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.7)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               3                               7 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               6                               4 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               3                               6 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               3                               1 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               2                               2 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               7                               2 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               2                               3 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               5                               4 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               7 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               6                               2 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               2                               1 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               7                               4 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               7                               6 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               3                               1 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               3                               7 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               2                               4 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               1                               1 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               7                               2 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               7                               1 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               2                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               7
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 4 7 0 0 2
##      E    3 2 5 1 1
##      EBC  4 0 2 3 1
##      EC   5 0 3 1 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 4 7 0 0 0 2
##      E    3 2 5 1 0 1
##      EBC  4 0 2 3 1 0
##      EC   5 0 3 1 0 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.7)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6 7
##      ctrl 0 7 0 0 0 2 4
##      E    3 2 5 1 0 1 0
##      EBC  1 0 2 3 1 0 3
##      EC   3 0 3 1 0 1 2
Confusion_Matrix_Prep(cluster.tries.pat.pY$som.cluster.h.5)
##                                          prep
## Asign_To_Clusters(som.model.pat, cluster) prep1 prep2
##                                         1     0    16
##                                         2     9     0
##                                         3    10     0
##                                         4     5     0
##                                         5     0     5

k-means

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.7, cl=7)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               4                               3 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               1                               2 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               4                               1 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               4                               3 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               4                               3 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               5                               5 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               3                               5 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               5                               4 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               1                               2 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               2                               3 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               1                               5 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               5                               3 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               3                               2 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               3                               1 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               4                               3 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               4                               3 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               5                               2 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               3                               5 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               3 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               5                               4 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               3
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               1                               2 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               2                               4 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               1                               2 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               1                               3 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               1                               3 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               5                               5 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               3                               5 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               5                               1 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               6                               4 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               2 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               2                               5 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               5                               3 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               3                               4 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               2                               2 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               1                               3 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               1                               2 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               5                               4 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               3                               5 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               3 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               1                               1 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               5                               1 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               3
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.7)
## log2FC_Xenograft_EBC_24h_1_Set1 log2FC_Xenograft_ctrl_5d_6_Set1 
##                               3                               4 
##   log2FC_Xenograft_E_24h_4_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               5                               1 
## log2FC_Xenograft_EBC_24h_2_Set1 log2FC_Xenograft_ctrl_5d_2_Set1 
##                               3                               5 
##   log2FC_Xenograft_E_24h_3_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               3                               6 
##   log2FC_Xenograft_E_24h_1_Set1  log2FC_Xenograft_EC_24h_2_Set1 
##                               3                               6 
##   log2FC_Xenograft_E_24h_2_Set1 log2FC_Xenograft_ctrl_5d_7_Set1 
##                               7                               7 
##  log2FC_Xenograft_EC_24h_3_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               4                               7 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               7                               3 
##  log2FC_Xenograft_EBC_5d_2_Set2  log2FC_Xenograft_EBC_5d_1_Set2 
##                               2                               1 
##  log2FC_Xenograft_EBC_5d_3_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               1                               4 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_1_Set2 
##                               5                               7 
## log2FC_Xenograft_ctrl_5d_1_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               7                               6 
## log2FC_Xenograft_ctrl_5d_4_Set2    log2FC_Xenograft_E_5d_3_Set2 
##                               4                               1 
## log2FC_Xenograft_ctrl_5d_6_Set2 log2FC_Xenograft_ctrl_5d_2_Set2 
##                               4                               5 
##   log2FC_Xenograft_EC_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               3                               6 
##   log2FC_Xenograft_EC_5d_4_Set3  log2FC_Xenograft_EBC_5d_4_Set3 
##                               3                               4 
## log2FC_Xenograft_ctrl_5d_5_Set3  log2FC_Xenograft_EBC_5d_5_Set3 
##                               7                               1 
##   log2FC_Xenograft_E_24h_5_Set3   log2FC_Xenograft_EC_5d_5_Set3 
##                               6                               6 
## log2FC_Xenograft_EBC_24h_4_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               4                               7 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               4                               6 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               7                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               4
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 2 0 4 0 7
##      E    1 1 3 5 2
##      EBC  1 3 4 2 0
##      EC   1 1 5 3 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 0 4 2 0 7 0
##      E    5 1 3 1 2 0
##      EBC  2 1 3 3 0 1
##      EC   3 2 4 1 0 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.7)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6 7
##      ctrl 0 0 0 4 2 0 7
##      E    1 0 5 0 1 3 2
##      EBC  3 1 2 3 0 1 0
##      EC   1 0 3 2 1 3 0

Xenografts - No normal pY Prep 1

train the SOM

som.pat <- Train_SOM(phos_mat= pY_mat_normtomedian[paste0("log2FC_", names(prep_l[prep_l == "prep1"]) ),], try.k = 2:15)

som.model.pat <- som.pat[[1]]
som.events.pat <- som.pat[[2]]

evaluate clustering algorithms

## Having selected a reasonable value for k, evaluate different clustering algorithms.

## Define a function for make a simple plot of clustering output.
## This is the same as previousl plotting, but we define the function
## here as we wanted to play with the color earlier.

## Try several different clustering algorithms, and, if desired, different values for k

cluster.tries.pat.pY <- list()
for(k in c(5,6,4)){
  message(paste(k, "clusters"))
  ## k-means clustering
  som.cluster.k <- kmeans(som.events.pat, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
  
  ## hierarchical clustering
  som.dist.pat <- dist(som.events.pat) # hierarchical, step 1
  som.cluster.h <- cutree(hclust(som.dist.pat), k = k) # hierarchical, step 2
  
  ## capture outputs
  cluster.tries.pat.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
  cluster.tries.pat.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}
## 5 clusters
## 6 clusters
## 4 clusters

Hierarchical

## Take a look at the various clusters.  You're looking for the algorithm that produces the
## least fragmented clusters.
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.4)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               2                               1 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               4                               2 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               2                               5 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               5                               5 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               5                               2 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               3                               3 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               5                               5 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               3                               2 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               1                               5 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               3                               5 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               2                               2 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               5                               2
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               2                               1 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               4                               2 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               2                               5 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               6                               6 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               6                               2 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               3                               3 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               6                               6 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               3                               2 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               1                               6 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               3                               6 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               2                               2 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               6                               2
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.4)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               2                               1 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               1                               2 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               2                               4 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               4                               2 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               3                               3 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               4                               4 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               3                               2 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               1                               4 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               3                               4 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               2                               2 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               4                               2
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 0 0 0 0 7
##      E    0 5 1 0 2
##      EBC  0 1 3 1 0
##      EC   2 2 0 0 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 0 0 0 0 0 7
##      E    0 5 1 0 1 1
##      EBC  0 1 3 1 0 0
##      EC   2 2 0 0 0 0
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.4)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4
##      ctrl 0 0 0 7
##      E    0 5 1 2
##      EBC  1 1 3 0
##      EC   2 2 0 0
Confusion_Matrix_Prep(cluster.tries.pat.pY$som.cluster.h.5)
##                                          prep
## Asign_To_Clusters(som.model.pat, cluster) prep1
##                                         1     2
##                                         2     8
##                                         3     4
##                                         4     1
##                                         5     9

k-means

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.4, cl=7)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               5                               2 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               3                               3 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               5                               4 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               4                               5 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               1                               1 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               4                               4 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               1                               5 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               2                               4 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               1                               4 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               5                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               4                               3
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               2                               5 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               6                               6 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               2                               3 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               4                               2 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               1                               1 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               4                               4 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               1                               2 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               5                               4 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               1                               4 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               2                               6 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               4                               6
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.4)
## log2FC_Xenograft_EBC_24h_1_Set1  log2FC_Xenograft_EC_24h_1_Set1 
##                               3                               2 
## log2FC_Xenograft_EBC_24h_2_Set1   log2FC_Xenograft_E_24h_3_Set1 
##                               2                               3 
##   log2FC_Xenograft_E_24h_1_Set1   log2FC_Xenograft_E_24h_2_Set1 
##                               3                               4 
## log2FC_Xenograft_ctrl_5d_7_Set1 log2FC_Xenograft_ctrl_5d_5_Set1 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_1_Set1   log2FC_Xenograft_E_24h_1_Set2 
##                               4                               3 
##  log2FC_Xenograft_EBC_5d_1_Set2  log2FC_Xenograft_EBC_5d_3_Set2 
##                               1                               1 
##    log2FC_Xenograft_E_5d_1_Set2 log2FC_Xenograft_ctrl_5d_1_Set2 
##                               4                               4 
##    log2FC_Xenograft_E_5d_3_Set2   log2FC_Xenograft_EC_5d_2_Set2 
##                               1                               3 
##   log2FC_Xenograft_EC_5d_4_Set3 log2FC_Xenograft_ctrl_5d_5_Set3 
##                               3                               4 
##  log2FC_Xenograft_EBC_5d_5_Set3 log2FC_Xenograft_ctrl_5d_7_Set3 
##                               1                               4 
##   log2FC_Xenograft_E_24h_1_Set3    log2FC_Xenograft_E_5d_5_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_1_Set3  log2FC_Xenograft_EC_24h_5_Set3 
##                               4                               3
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 0 0 0 7 0
##      E    1 0 2 2 3
##      EBC  3 0 1 0 1
##      EC   0 2 1 0 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 0 0 0 7 0 0
##      E    1 3 1 1 0 2
##      EBC  3 1 0 0 0 1
##      EC   0 1 0 0 2 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.4)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4
##      ctrl 0 0 0 7
##      E    1 0 5 2
##      EBC  3 1 1 0
##      EC   0 1 3 0

Xenografts - No normal pY Prep 2

train the SOM

som.pat <- Train_SOM(phos_mat= pY_mat_normtomedian[paste0("log2FC_", names(prep_l[prep_l == "prep2"]) ),], try.k = 2:15)

som.model.pat <- som.pat[[1]]
som.events.pat <- som.pat[[2]]

evaluate clustering algorithms

## Having selected a reasonable value for k, evaluate different clustering algorithms.

## Define a function for make a simple plot of clustering output.
## This is the same as previousl plotting, but we define the function
## here as we wanted to play with the color earlier.

## Try several different clustering algorithms, and, if desired, different values for k

cluster.tries.pat.pY <- list()
for(k in c(5,6,4)){
  message(paste(k, "clusters"))
  ## k-means clustering
  som.cluster.k <- kmeans(som.events.pat, centers = k, iter.max = 100, nstart = 10)$cluster # k-means
  
  ## hierarchical clustering
  som.dist.pat <- dist(som.events.pat) # hierarchical, step 1
  som.cluster.h <- cutree(hclust(som.dist.pat), k = k) # hierarchical, step 2
  
  ## capture outputs
  cluster.tries.pat.pY[[paste0('som.cluster.k.', k)]] <- som.cluster.k
  cluster.tries.pat.pY[[paste0('som.cluster.h.', k)]] <- som.cluster.h
}
## 5 clusters
## 6 clusters
## 4 clusters

Hierarchical

## Take a look at the various clusters.  You're looking for the algorithm that produces the
## least fragmented clusters.
Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.h.4)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.5)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               1                               5 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               1                               1 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               4                               1 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               5                               2 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               5                               3 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               4                               1 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               1                               3 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               2                               3 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               4                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               4
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.6)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               1                               6 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               1                               1 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               5                               1 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               6                               2 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               6                               3 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               4                               1 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               1                               3 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               2                               3 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               5                               5 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               4                               3 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               5
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.h.4)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               1                               4 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               1                               1 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               3                               1 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               1 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               4                               2 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               3                               1 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               1                               2 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               1                               2 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               2 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               3
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 4 0 0 2 0
##      E    0 0 3 0 1
##      EBC  1 1 0 2 1
##      EC   1 1 1 2 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 4 0 0 2 0 0
##      E    0 0 3 0 0 1
##      EBC  1 1 0 0 2 1
##      EC   1 1 1 0 2 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.h.4)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4
##      ctrl 4 0 2 0
##      E    0 3 0 1
##      EBC  2 0 2 1
##      EC   2 1 2 1
Confusion_Matrix_Prep(cluster.tries.pat.pY$som.cluster.h.5)
##                                          prep
## Asign_To_Clusters(som.model.pat, cluster) prep2
##                                         1     6
##                                         2     2
##                                         3     4
##                                         4     6
##                                         5     3

k-means

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6, cl=7)

Plot_Colored_SOM(som.model.pat, cluster.tries.pat.pY$som.cluster.k.4, cl=7)

Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.5)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               3                               5 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               1                               1 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               4                               1 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               5                               3 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               5                               2 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               1                               2 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               3                               2 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               4                               4 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               2 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               4
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.6)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               6                               4 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               5                               5 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               1                               5 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               4                               6 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               4                               2 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               3                               6 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               5                               2 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               6                               2 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               1                               1 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               2 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               1
Asign_To_Clusters(som.model.pat, cluster.tries.pat.pY$som.cluster.k.4)
## log2FC_Xenograft_ctrl_5d_6_Set1   log2FC_Xenograft_E_24h_4_Set1 
##                               3                               2 
## log2FC_Xenograft_ctrl_5d_2_Set1 log2FC_Xenograft_EBC_24h_3_Set1 
##                               4                               4 
##  log2FC_Xenograft_EC_24h_2_Set1  log2FC_Xenograft_EC_24h_3_Set1 
##                               4                               4 
##  log2FC_Xenograft_EBC_5d_2_Set2   log2FC_Xenograft_EC_5d_1_Set2 
##                               2                               3 
##   log2FC_Xenograft_EC_5d_3_Set2    log2FC_Xenograft_E_5d_4_Set2 
##                               2                               1 
## log2FC_Xenograft_ctrl_5d_4_Set2 log2FC_Xenograft_ctrl_5d_6_Set2 
##                               3                               3 
## log2FC_Xenograft_ctrl_5d_2_Set2    log2FC_Xenograft_E_5d_2_Set2 
##                               4                               1 
##  log2FC_Xenograft_EBC_5d_4_Set3   log2FC_Xenograft_E_24h_5_Set3 
##                               3                               1 
##   log2FC_Xenograft_EC_5d_5_Set3 log2FC_Xenograft_EBC_24h_4_Set3 
##                               1                               4 
## log2FC_Xenograft_ctrl_5d_4_Set3  log2FC_Xenograft_EC_24h_4_Set3 
##                               3                               1 
## log2FC_Xenograft_EBC_24h_5_Set3 
##                               1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.5)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5
##      ctrl 2 0 4 0 0
##      E    0 3 0 0 1
##      EBC  1 0 1 2 1
##      EC   1 1 1 2 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.6)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4 5 6
##      ctrl 0 0 2 0 2 2
##      E    0 3 0 1 0 0
##      EBC  2 0 0 1 1 1
##      EC   2 1 0 1 1 1
Confusion_Matrix(cluster.tries.pat.pY$som.cluster.k.4)
##          Asign_To_Clusters(som.model.pat, cluster)
## treatment 1 2 3 4
##      ctrl 0 0 4 2
##      E    3 1 0 0
##      EBC  1 1 1 2
##      EC   2 1 1 2

Session Info

sessionInfo()
## R version 4.1.3 (2022-03-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Big Sur/Monterey 10.16
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] forcats_0.5.2               stringr_1.4.1              
##  [3] dplyr_1.0.10                purrr_0.3.5                
##  [5] readr_2.1.3                 tidyr_1.2.1                
##  [7] tibble_3.1.8                ggplot2_3.3.6              
##  [9] tidyverse_1.3.2             kohonen_3.0.11             
## [11] mdatools_0.13.0             SummarizedExperiment_1.24.0
## [13] GenomicRanges_1.46.1        GenomeInfoDb_1.30.1        
## [15] MatrixGenerics_1.6.0        matrixStats_0.62.0         
## [17] DEP_1.16.0                  org.Hs.eg.db_3.14.0        
## [19] AnnotationDbi_1.56.2        IRanges_2.28.0             
## [21] S4Vectors_0.32.4            Biobase_2.54.0             
## [23] BiocGenerics_0.40.0         fgsea_1.20.0               
## 
## loaded via a namespace (and not attached):
##   [1] utf8_1.2.2             shinydashboard_0.7.2   proto_1.0.0           
##   [4] gmm_1.7                tidyselect_1.2.0       RSQLite_2.2.18        
##   [7] htmlwidgets_1.5.4      grid_4.1.3             BiocParallel_1.28.3   
##  [10] norm_1.0-10.0          munsell_0.5.0          codetools_0.2-18      
##  [13] preprocessCore_1.56.0  chron_2.3-58           DT_0.26               
##  [16] withr_2.5.0            colorspace_2.0-3       highr_0.9             
##  [19] knitr_1.40             rstudioapi_0.14        ggsignif_0.6.4        
##  [22] mzID_1.32.0            labeling_0.4.2         GenomeInfoDbData_1.2.7
##  [25] farver_2.1.1           bit64_4.0.5            vctrs_0.5.0           
##  [28] generics_0.1.3         xfun_0.34              R6_2.5.1              
##  [31] doParallel_1.0.17      ggbeeswarm_0.6.0       clue_0.3-62           
##  [34] MsCoreUtils_1.6.2      bitops_1.0-7           cachem_1.0.6          
##  [37] DelayedArray_0.20.0    assertthat_0.2.1       promises_1.2.0.1      
##  [40] scales_1.2.1           googlesheets4_1.0.1    beeswarm_0.4.0        
##  [43] gtable_0.3.1           affy_1.72.0            sandwich_3.0-2        
##  [46] rlang_1.0.6            mzR_2.28.0             GlobalOptions_0.1.2   
##  [49] splines_4.1.3          rstatix_0.7.0          gargle_1.2.1          
##  [52] impute_1.68.0          broom_1.0.1            abind_1.4-5           
##  [55] BiocManager_1.30.19    yaml_2.3.6             modelr_0.1.9          
##  [58] backports_1.4.1        httpuv_1.6.6           tools_4.1.3           
##  [61] affyio_1.64.0          ellipsis_0.3.2         gplots_3.1.3          
##  [64] jquerylib_0.1.4        RColorBrewer_1.1-3     STRINGdb_2.6.5        
##  [67] MSnbase_2.20.4         gsubfn_0.7             Rcpp_1.0.9            
##  [70] hash_2.2.6.2           plyr_1.8.7             zlibbioc_1.40.0       
##  [73] RCurl_1.98-1.9         ggpubr_0.4.0           sqldf_0.4-11          
##  [76] GetoptLong_1.0.5       zoo_1.8-11             haven_2.5.1           
##  [79] cluster_2.1.4          fs_1.5.2               magrittr_2.0.3        
##  [82] data.table_1.14.4      circlize_0.4.15        reprex_2.0.2          
##  [85] googledrive_2.0.0      pcaMethods_1.86.0      mvtnorm_1.1-3         
##  [88] ProtGenerics_1.26.0    hms_1.1.2              mime_0.12             
##  [91] evaluate_0.17          xtable_1.8-4           XML_3.99-0.12         
##  [94] readxl_1.4.1           gridExtra_2.3          shape_1.4.6           
##  [97] compiler_4.1.3         KernSmooth_2.23-20     ncdf4_1.19            
## [100] crayon_1.5.2           htmltools_0.5.3        mgcv_1.8-41           
## [103] later_1.3.0            tzdb_0.3.0             lubridate_1.8.0       
## [106] DBI_1.1.3              dbplyr_2.2.1           ComplexHeatmap_2.10.0 
## [109] MASS_7.3-58.1          tmvtnorm_1.5           car_3.1-1             
## [112] Matrix_1.5-1           permute_0.9-7          cli_3.4.1             
## [115] vsn_3.62.0             imputeLCMD_2.1         parallel_4.1.3        
## [118] igraph_1.3.5           pkgconfig_2.0.3        MALDIquant_1.21       
## [121] xml2_1.3.3             foreach_1.5.2          vipor_0.4.5           
## [124] bslib_0.4.0            XVector_0.34.0         rvest_1.0.3           
## [127] digest_0.6.30          vegan_2.6-4            Biostrings_2.62.0     
## [130] rmarkdown_2.17         cellranger_1.1.0       fastmatch_1.1-3       
## [133] shiny_1.7.3            gtools_3.9.3           rjson_0.2.21          
## [136] lifecycle_1.0.3        nlme_3.1-160           jsonlite_1.8.3        
## [139] carData_3.0-5          limma_3.50.3           fansi_1.0.3           
## [142] pillar_1.8.1           lattice_0.20-45        KEGGREST_1.34.0       
## [145] fastmap_1.1.0          httr_1.4.4             plotrix_3.8-2         
## [148] glue_1.6.2             png_0.1-7              iterators_1.0.14      
## [151] bit_4.0.4              stringi_1.7.8          sass_0.4.2            
## [154] blob_1.2.3             caTools_1.18.2         memoise_2.0.1
knitr::knit_exit()